import { ElForm, ElInput, ElTooltip, ElCascader } from "element-plus";
import type { CascaderProps } from "element-plus";

/**
 * 全局类型定义
 */

/**
 * 标准 API 响应结构
 * @template T - 响应数据的类型
 */
export interface ResponseType<T = unknown> {
    /** 响应状态码（可能是 code 或 status） */
    status: number;
    code?: number;
    /** 响应消息 */
    message: string;
    /** 响应数据 */
    data: T;
    /** 重定向结果（用于 302 状态） */
    result?: string;
}

/**
 * 列表响应结构
 * @template T - 列表项的类型
 */
export interface ListResponseType<T = unknown> {
    /** 数据列表 */
    list: T[];
    /** 当前页码 */
    currentPage: number;
    /** 每页数量 */
    numPerPage: number;
    /** 总记录数 */
    totalCount: number;
    /** 总页数 */
    totalPages: number;
}

/**
 * 分页信息
 */
export interface PaginationType {
    /** 当前页码 */
    currentPage: number;
    /** 每页数量 */
    numPerPage: number;
    /** 总记录数 */
    totalCount: number;
    /** 总页数 */
    totalPages: number;
}

/**
 * 基础信息（学期列表项、学院列表项、校区列表项、教学楼列表项、教室列表项）
 */
export interface BaseListItemType {
    /** 编号 */
    code: string | number;
    /** 名称 */
    name: string;
    /** 额外 id，可用于前端唯一标识 */
    id?: string | number;
}

/**
 * 表单实例
 */
export type FormInstanceType = InstanceType<typeof ElForm>;
export type InputInstanceType = InstanceType<typeof ElInput>;
export type TooltipInstanceType = InstanceType<typeof ElTooltip>;
export type CascaderInstanceType = InstanceType<typeof ElCascader>;
export type CascaderPropsType = typeof CascaderProps;
